home *** CD-ROM | disk | FTP | other *** search
/ Best of Legend / Best of Legend.iso / setup / title.mst < prev    next >
Text File  |  1994-10-20  |  14KB  |  431 lines

  1.     '' Include files
  2.     '$INCLUDE 'setupapi.inc'
  3.     '$INCLUDE 'mscpydis.inc'    ''System
  4.     '$INCLUDE 'msdetect.inc'    ''Detects Avalilable Disk Space
  5.     
  6.     
  7.  
  8.  
  9.     '' Global variables
  10.  
  11.     GLOBAL TitleShortName$
  12.     GLOBAL TitleLongName$
  13.     GLOBAL MVBFileName$
  14.     GLOBAL PromptForPath%
  15.     GLOBAL DefaultPath$
  16.     GLOBAL ProgManGroup$
  17.     GLOBAL ProgManItem$
  18.     GLOBAL ReStartD$
  19.     GLOBAL WinDir$
  20.     GLOBAL WinSysDir$
  21.     GLOBAL WINDRIVE$    ''Windows Drive Letter.
  22.     GLOBAL CHECKSTATES$
  23.     GLOBAL szIni$
  24.     GLOBAL szGork$
  25.     GLOBAL SizeReq&  '' Total Disk Size required for installation
  26.  
  27.     TitleShortName$ = "sampler"
  28.     
  29.     TitleLongName$ = "Legend Sampler"
  30.     MVBFileName$ = "sampler"
  31.         
  32.     PromptForPath% = 0
  33.         
  34.     DefaultPath$ = "c:\sampler"
  35.     
  36.     ProgManGroup$ = "accessories"
  37.     ProgManItem$ = "sampler"
  38.     
  39.  
  40.     '***********************************************************************
  41.     '** Mainline
  42.     '***********************************************************************
  43.  
  44.     GLOBAL CUIDLL$
  45.  
  46.     '' Dialog ID's
  47.     CONST WELCOME       = 100
  48.     CONST ASKQUIT       = 200
  49.     CONST EXITFAILURE   = 400
  50.     CONST EXITQUIT      = 600
  51.     CONST EXITSUCCESS   = 700
  52.     CONST APPHELP       = 900
  53.     CONST CHECK         = 2500
  54.     CONST SMALLWIN      = 2200
  55.     CONST RESTART       = 2600
  56.     CONST RESTARTII     = 2700
  57.     
  58.     '' Bitmap ID
  59.     CONST LOGO = 1
  60.     
  61.     '' Functions and subroutines
  62.     DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  63.     DECLARE FUNCTION GetTitleDir (szDefault$) AS STRING
  64.     DECLARE SUB ModifyViewerIni
  65.     DECLARE SUB ModifyProgramManager
  66.     DECLARE SUB Install
  67.     DECLARE FUNCTION OnWindowsNT LIB "INIUPD.DLL" AS INTEGER
  68.     DECLARE FUNCTION VflatdPresent LIB "iniupd.DLL" AS INTEGER
  69.     DECLARE fUNCTION ExitWindowsExec  LIB "User" (Exec$, Param$) AS INTEGER
  70.     
  71. INIT:    
  72.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  73.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  74.  
  75.     SetTitle "Legend Video Sampler"
  76.     SetBitmap CUIDLL$, LOGO
  77.      
  78.     WIN32ENABLED% = 0
  79.     MajorVer% = GetWindowsMajorVersion()
  80.     MinorVer% = GetWindowsMinorVersion()
  81.  
  82.     IF MajorVer% < 3 OR (MajorVer% = 3 AND MinorVer% < 10) THEN
  83.     i% = DoMsgBox("Microsoft Windows version 3.10 or greater is required for this software.  Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  84.     END
  85.     END IF
  86.  
  87.     IF OnWindowsNT() THEN
  88.       i% = DoMsgBox("This version of Video for Windows does not run on Windows NT.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  89.       END
  90.     END IF
  91.     
  92.     '' Read in the INF file.
  93.  
  94.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)    
  95.  
  96.  
  97.     ReadInfFile GetSymbolValue("STF_CWDDIR") + "TITLE.INF"
  98.  
  99. WELCOME:
  100.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  101.     IF sz$ = "CONTINUE" THEN
  102.        UIPop 1
  103.      ELSE
  104.     GOSUB ASKQUIT
  105.     GOTO WELCOME
  106.     END IF
  107.  
  108.     ClearCopyList
  109.     
  110.     szTitleDir$ = GetWindowsDir()
  111.  
  112.     WinDir$ = GetWindowsDir()
  113.     SrcDir$ = GetSymbolValue("STF_SRCDIR") + "SETUP\" 
  114.     DEST$ = GetWindowsDir()
  115.     WinSysDir$ = GetWindowsSysDir()
  116.     szGork$ = GetSymbolValue("STF_SRCDIR")
  117.     szIni$ = MakePath(GetWindowsDir(), "VIEWER.INI") 
  118.  
  119.     AddSectionFilesToCopyList "System Files", SrcDir$, WinSysDir$
  120.     AddSectionFilesToCopyList "Installed Title Files", GetSymbolValue("STF_SRCDIR"), szTitleDir$
  121.     AddSectionFilesToCopyList "VfW Runtime", SrcDir$, WinSysDir$
  122.     AddSectionFilesToCopyList "OLE2", SrcDir$, WinSysDir$
  123.     AddSectionFilesToCopyList "ACM Drivers", SrcDir$, WinSysDir$
  124.     AddSectionFilesToCopyList "MPlayer", SrcDir$, WinDir$
  125.     AddSectionFilesToCopyList "AVICodecs", SrcDir$, WinSysDir$
  126.     AddSectionFilesToCopyList "Indeo-ini", SrcDir$, WinDir$
  127.     
  128.     
  129.  
  130.  
  131. ''  Check windrive diskspace
  132.     SizeReq& = GetCopyListCost ("","", "")
  133.     IF SizeReq& <> 0 THEN
  134.     GOSUB SMALLWIN
  135.     END
  136.     END IF
  137.  
  138.     Install
  139.     
  140.  
  141. '' Restart Windows: if it has to updates ACM from DOS, it restarts Windows automatically
  142. '' else, it gives the user the choice
  143.     RESTRT% = RestartListEmpty ()
  144.     Exe$ = DEST$ + "\_msrstrt.exe"
  145.     Batch$ = DEST$ + "\_mssetup.bat"
  146.     empty$ = ""
  147. RESTART:
  148.     IF RESTRT% = 0 THEN
  149.        sz$ = UIStartDlg(cuidll$, RESTART, "FInfo0DlgProc", 0, "")
  150.        IF sz$ = "REACTIVATE" THEN
  151.       GOTO RESTART
  152.        ENDIF
  153.        I% = ExitExecRestart ()
  154.        RemoveFile Exe$, cmoForce
  155.        RemoveFile Batch$, cmoForce
  156.        END
  157.     ELSE
  158.        sz$ = UIStartDlg(CUIDLL$, RESTARTII, "FQuitDlgProc", 0, "")
  159.        IF sz$ = "CONTINUE" THEN
  160.       I% = ExitWindowsExec (Exe$, empty$)
  161.       IF I% = 0 THEN
  162.          GOTO RESTART
  163.       ELSE
  164.          END
  165.      ENDIF
  166.        ELSEIF sz$ = "EXIT" THEN
  167.       UIPopAll
  168.       END
  169.        ELSEIF sz$ = "REACTIVATE" THEN
  170.       GOTO RESTART
  171.        ELSE
  172.       UIPop 1
  173.        END IF
  174.     END IF
  175.  
  176. QUIT:
  177.     ON ERROR GOTO ERRQUIT
  178.  
  179.     IF ERR = 0 THEN
  180.     dlg% = EXITSUCCESS
  181.     ELSEIF ERR = STFQUIT THEN
  182.     dlg% = EXITQUIT
  183.     ELSE
  184.     dlg% = EXITFAILURE
  185.     END IF
  186.  
  187. QUITL1:
  188.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  189.     IF sz$ = "REACTIVATE" THEN
  190.     GOTO QUITL1
  191.     END IF
  192.     UIPop 1
  193.     END
  194.  
  195. ERRQUIT:
  196.     i% = DoMsgBox("An installation problem occured, call the product support service", "Setup Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  197.     END
  198.  
  199.  
  200. ASKQUIT:
  201.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  202.  
  203.     IF sz$ = "EXIT" THEN
  204.     UIPopAll
  205. ''        ERROR STFQUIT
  206.     END
  207.     ELSEIF sz$ = "REACTIVATE" THEN
  208.     GOTO ASKQUIT
  209.     ELSE
  210.     UIPop 1
  211.     END IF
  212.     RETURN
  213.  
  214. SMALLWIN:
  215.     sz$ = UIStartDlg(CUIDLL$, SMALLWIN, "FInfo0DlgProc", 0, "")
  216.     IF sz$ = "REACTIVATE" THEN
  217.     GOTO SMALLWIN
  218.     END IF
  219.     UIPop 1
  220.     RETURN
  221.     
  222.  
  223. '*************************************************************************
  224. '** Purpose:
  225. '**     Prompts the user for a path for the title files
  226. '** Arguments:
  227. '**     szDefault$ - default path
  228. '** Returns:
  229. '**     New valid path name, or "" if the user quit.
  230. '*************************************************************************
  231.  
  232. FUNCTION GetTitleDir (szDefault$) STATIC AS STRING
  233.  
  234.     SetSymbolValue "String", TitleShortName$
  235.     SetSymbolValue "EditTextIn", szDefault$
  236.     SetSymbolValue "EditFocus", "ALL"
  237.  
  238.     GETPATH:
  239.  
  240.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, "FHelpDlgProc")
  241.  
  242.     IF sz$ = "CONTINUE" THEN
  243.         szTitleDir$ = GetSymbolValue("EditTextOut")
  244.         IF IsDirWritable(szTitleDir$) = 0 THEN
  245.  
  246.             BADPATH:
  247.  
  248.             sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfoDlgProc", 0, "")
  249.             IF sz$ = "REACTIVATE" THEN
  250.                 GOTO BADPATH
  251.             END IF
  252.             UIPop 1
  253.             GOTO GETPATH
  254.         END IF
  255.         UIPop 1
  256.         CreateDir szTitleDir$, cmoNone
  257.  
  258.     ELSEIF sz$ = "REACTIVATE" THEN
  259.         GOTO GETPATH
  260.  
  261.     ELSE
  262.         szTitleDir$ = ""
  263.  
  264.     END IF
  265.  
  266.     GetTitleDir = szTitleDir$
  267.  
  268. END FUNCTION
  269.  
  270. '**
  271. '** Purpose:
  272. '**     Performs all installation operations.
  273. '** Arguments:
  274. '**     none.
  275. '** Returns:
  276. '**     none.
  277. '*************************************************************************
  278. SUB Install STATIC
  279.     
  280.     SetRestartDir WinDir$
  281.     CopyFilesInCopyList
  282.  
  283. ''Updating WIN.INI and SYSTEM.INI
  284.     IF VflatdPresent() = 0 THEN
  285.        CreateSysIniKeyValue WinDir$ + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite
  286.     END IF
  287.  
  288.     CreateIniKeyValue "WIN.INI", "Extensions", "MVB", "mviewer2.exe", cmoNone
  289.  
  290.     
  291.  
  292.     
  293.     CreateIniKeyValue szIni$, MVBFileName$, "Name", TitleLongName$, cmoOverwrite
  294.     CreateIniKeyValue szIni$, MVBFileName$, "Path", GetSymbolValue("STF_SRCDIR"), cmoOverwrite
  295.     
  296.  
  297.     CreateIniKeyValue szIni$, "FILES", MVBFileName$ + ".MVB", GetSymbolValue("STF_SRCDIR") + "," + "Please insert the " + TitleLongName$ + " disk.", cmoOverwrite
  298.  
  299.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.CVID", "iccvid.drv", cmoOverwrite
  300.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
  301.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV31", "indeov.drv", cmoOverwrite
  302.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite
  303.     I% = DoesIniKeyExist ("system.ini", "Drivers", "VIDC.RT21")
  304.     IF I% = 0  THEN
  305.        CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.RT21", "indeov.drv", cmoOverwrite
  306.     END IF
  307.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.YVU9", "indeov.drv", cmoOverwrite
  308.     CreateIniKeyValue WinDir$ + "WIN.INI", "mci extensions", "avi", "AVIVideo", cmoOverwrite
  309.     CreateIniKeyValue WinDir$ + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite
  310.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  311.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.msadpcm", "msadpcm.acm", cmoOverwrite
  312.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.imaadpcm", "imaadpcm.acm", cmoOverwrite
  313.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite
  314.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite
  315.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "imaadpcm.acm", "Microsoft IMA ADPCM Codec V2.00", cmoOverwrite
  316.     Run ("regedit.exe /s " + MakePath(WinDir$, "mplayer.reg"))
  317.     Run ("regedit.exe /s " + MakePath(WinSysDir$, "OLE2.reg"))
  318.     Run ("regedit.exe /s " + MakePath(WinSysDir$, "cleanup.reg"))
  319.  
  320. '' Mplayer
  321.     CreateProgmanItem "Accessories", "Media Player", MakePath(WinDir$, "mplayer.exe"), "", cmoOverwrite
  322.     CreateProgmanItem ProgmanGroup$, ProgmanItem$, "mviewer2.exe " + MakePath(GetSymbolValue("STF_SRCDIR"), MVBFileName$ + ".MVB"), MakePath(GetSymbolValue("STF_SRCDIR"), MVBFileName$ + ".ICO")+",0,0,0,"+szGork$, cmoOverwrite
  323.  
  324.     Run ("profdisp.exe")   
  325. END SUB
  326.              
  327.              
  328. '*************************************************************************
  329. '** Purpose:
  330. '**     Appends a file name to the end of a directory path,
  331. '**     inserting a backslash character as needed.
  332. '** Arguments:
  333. '**     szDir$  - full directory path (with optional ending "\")
  334. '**     szFile$ - filename to append to directory
  335. '** Returns:
  336. '**     Resulting fully qualified path name.
  337. '*************************************************************************
  338.  
  339. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  340.     IF szDir$ = "" THEN
  341.         MakePath = szFile$
  342.     ELSEIF szFile$ = "" THEN
  343.         MakePath = szDir$
  344.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  345.         MakePath = szDir$ + szFile$
  346.     ELSE
  347.         MakePath = szDir$ + "\" + szFile$
  348.     END IF
  349. END FUNCTION
  350.  
  351.  
  352.  
  353. '*************************************************************************
  354. '** Purpose:
  355. '**     Registers title in VIEWER.INI
  356. '*************************************************************************
  357.  
  358. SUB ModifyViewerIni STATIC
  359.  
  360.     '' Get the VIEWER.INI file
  361.     
  362.     szIni$ = MakePath(GetWindowsDir(), "VIEWER.INI")
  363.  
  364.     '' First register the title file, setting the Name and Path entries. 
  365.     '' We assume that the MVB file is the same directory as SETUP.EXE.
  366.     ''
  367.     '' CUSTOMIZATION: If you're installing multiple MVB files, copy the
  368.     '' following two statements for each additional file, substituting
  369.     '' the appropriate long name and MVB filename for the TitleLongName$
  370.     '' and MVBFileName$ variables.
  371.     
  372.     CreateIniKeyValue szIni$, MVBFileName$, "Name", TitleLongName$, cmoOverwrite
  373.     CreateIniKeyValue szIni$, MVBFileName$, "Path", GetSymbolValue("STF_SRCDIR"), cmoOverwrite
  374.     
  375.     '' Now we have to register the MVB file in the [FILES] section, so 
  376.     '' Viewer can find files that are not on the path and display a 
  377.     '' special message when a file is not found.
  378.  
  379.     CreateIniKeyValue szIni$, "FILES", MVBFileName$ + ".MVB", GetSymbolValue("STF_SRCDIR") + "," + "Please insert the " + TitleLongName$ + " disk.", cmoOverwrite
  380.  
  381.     '' CUSTOMIZATION: If you're installing a Help title or any custom DLLs,
  382.     '' you should copy the preceding statement for each extra title or DLL.
  383.     ''
  384.     '' Example for installing an extra title:
  385.     ''
  386.     ''    CreateIniKeyValue szIni$, "FILES", "GALHELP.MVB", GetSymbolValue("STF_SRCDIR") + "," + "Please insert the Viewer 2.0 Gallery disk.", cmoOverwrite
  387.     ''
  388.     '' Example for installing a custom DLL:
  389.     ''
  390.     ''    CreateIniKeyValue szIni$, "FILES", "GALLERY.DLL", GetSymbolValue("STF_SRCDIR") + "," + "A required file is missing. Please reinstall the Viewer Gallery.", cmoOverwrite
  391.  
  392. END SUB
  393.  
  394.  
  395. '*************************************************************************
  396. '** Purpose:
  397. '**     Creates program manager entries for the title
  398. '*************************************************************************
  399.  
  400. SUB ModifyProgramManager STATIC
  401.  
  402.     '' Create the program manager group
  403.  
  404.     szGork$ = GetSymbolValue("STF_SRCDIR")
  405.  
  406.     '' j% = DoMsgBox(szGork$, "Path Name", 0)
  407.  
  408.     CreateProgmanGroup ProgmanGroup$, "", cmoNone
  409.     ShowProgmanGroup ProgmanGroup$, 1, cmoNone
  410.     
  411.     '' Create an entry for the title
  412.      
  413.     '' [no icon] CreateProgmanItem ProgmanGroup$, ProgmanItem$, "mviewer2.exe " + MakePath(GetSymbolValue("STF_SRCDIR"), MVBFileName$ + ".MVB"), ",,,,szGork$", cmoOverwrite
  414.     
  415.     '' CUSTOMIZATION: 
  416.     ''
  417.     '' To create additional Program Manager items, copy the preceding 
  418.     '' statement for each additional item, substituting the appropriate
  419.     '' name for the MVBFileName$ variable.
  420.     ''
  421.     '' To display a custom icon with the Program Manager item, specify
  422.     '' the icon filename with the fourth parameter (this parameter is 
  423.     '' currently an empty string, ""). The following example specifies 
  424.         '' an icon with the same filename as the .MVB file:
  425.     ''
  426.     CreateProgmanItem ProgmanGroup$, ProgmanItem$, "mviewer2.exe " + MakePath(GetSymbolValue("STF_SRCDIR"), MVBFileName$ + ".MVB"), MakePath(GetSymbolValue("STF_SRCDIR"), MVBFileName$ + ".ICO")+",0,0,0,"+szGork$, cmoOverwrite
  427.  
  428. END SUB
  429.  
  430.  
  431.